<?php

include_once 'db/Crud.php';
class Funcionario extends Crud {
    protected $table = "funcionario";
    private $nome;
    private $cpf;
    private $rg;
    private $tituloEleitor;
    private $endereco;
    private $telefone;
    private $celular;
    private $idCargo;
    private $formacao;
    private $email;
    private $senha;
    private $vinculo;
    private $status;

        public function getNome() {
        return $this->nome;
    }

    public function getCpf() {
        return $this->cpf;
    }

    public function getRg() {
        return $this->rg;
    }

    public function getTituloEleitor() {
        return $this->tituloEleitor;
    }

    public function getEndereco() {
        return $this->endereco;
    }

    public function getTelefone() {
        return $this->telefone;
    }

    public function getCelular() {
        return $this->celular;
    }

    public function getIdCargo() {
        return $this->idCargo;
    }

    public function getFormacao() {
        return $this->formacao;
    }

    public function getEmail() {
        return $this->email;
    }

    public function getSenha() {
        return $this->senha;
    }

    public function getVinculo() {
        return $this->vinculo;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }

    public function setCpf($cpf) {
        $this->cpf = $cpf;
    }

    public function setRg($rg) {
        $this->rg = $rg;
    }

    public function setTituloEleitor($tituloEleitor) {
        $this->tituloEleitor = $tituloEleitor;
    }

    public function setEndereco($endereco) {
        $this->endereco = $endereco;
    }

    public function setTelefone($telefone) {
        $this->telefone = $telefone;
    }

    public function setCelular($celular) {
        $this->celular = $celular;
    }

    public function setIdCargo($idCargo) {
        $this->idCargo = $idCargo;
    }

    public function setFormacao($formacao) {
        $this->formacao = $formacao;
    }

    public function setEmail($email) {
        $this->email = $email;
    }

    public function setSenha($senha) {
        $this->senha = $senha;
    }

    public function setVinculo($vinculo) {
        $this->vinculo = $vinculo;
    }
    
    public function getStatus() {
        return $this->status;
    }

    public function setStatus($status) {
        $this->status = $status;
    }
    


    public function insert() {
      $sql = "INSERT INTO $this->table (fun_nome, fun_cpf, fun_rg, fun_titulo_eleitor, fun_endereco, fun_telefone, fun_celular, fun_car_id, fun_formacao, fun_email, fun_senha, fun_vinculo, fun_status) VALUES (:nome, :cpf, :rg, :tituloEleitor, :endereco, :telefone, :celular, :idCargo, :formacao, :email, :senha, :vinculo, :status)";
      $stmt = Db::prepare($sql);
      $stmt->bindParam(':nome', $this->nome);
      $stmt->bindParam(':cpf', $this->cpf);
      $stmt->bindParam(':rg', $this->rg);
      $stmt->bindParam(':tituloEleitor', $this->tituloEleitor);
      $stmt->bindParam(':endereco', $this->endereco);
      $stmt->bindParam(':telefone', $this->telefone);
      $stmt->bindParam(':celular', $this->celular);
      $stmt->bindParam(':idCargo', $this->idCargo);
      $stmt->bindParam(':formacao', $this->formacao);
      $stmt->bindParam(':email', $this->email);
      $stmt->bindParam(':senha', $this->senha);
      $stmt->bindParam(':vinculo', $this->vinculo);
      $stmt->bindParam(':status', $this->status);
      return $stmt->execute();
    }

    public function update($id) {
        
        $sql = "UPDATE $this->table SET fun_nome = :nome, fun_cpf = :cpf, fun_rg = :rg, fun_titulo_eleitor = :tituloEleitor, fun_endereco = :endereco, fun_telefone = :telefone, fun_celular = :celular, fun_car_id = :idCargo, fun_formacao = :formacao, fun_email = :email, fun_senha = :senha, fun_vinculo = :vinculo, fun_status = :status WHERE id = :id";
        $stmt = Db::prepare($sql);
        $stmt->bindParam(':nome', $this->nome);
        $stmt->bindParam(':cpf', $this->cpf);
        $stmt->bindParam(':rg', $this->rg);
        $stmt->bindParam(':tituloEleitor', $this->tituloEleitor);
        $stmt->bindParam(':endereco', $this->endereco);
        $stmt->bindParam(':telefone', $this->telefone);
        $stmt->bindParam(':celular', $this->celular);
        $stmt->bindParam(':idCargo', $this->idCargo);
        $stmt->bindParam(':fomacao', $this->formacao);
        $stmt->bindParam(':email', $this->email);
        $stmt->bindParam(':senha', $this->senha);
        $stmt->bindParam(':vinculo', $this->vinculo);
        $stmt->bindParam(':status', $this->status);
        $stmt->bindParam(':id', $id);
        return $stmt->execute();
    }
    
    public function listaespecialista() {
        $sql = "SELECT funcionario.id as idfuncionario, funcionario.fun_nome as nomefuncionario FROM $this->table INNER JOIN cargo ON funcionario.fun_car_id = cargo.id WHERE cargo.car_nivel = 3 ";
        $stmt = Db::prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_CLASS);
        
    }

}
